from flask import Flask,render_template,request,session,redirect
import dbModel,SQL_TEMPLATES

app = Flask(__name__)
db = dbModel.dbUtils()

app.secret_key="1232333"
#首页路由
@app.route("/")
def index():
    return render_template("index.html")

#登录处理
@app.route("/login",methods=['POST'])
def login():
    #获取表单的输入：
    if request.method=='POST':
        username = request.form.get('username')
        userpwd = request.form.get('userpwd')
        #监控一下
        print('网页端提交的信息是'+username)
        if(len(username)>0 and len(userpwd)>0):
            #要去数据库里查询存在的用户名和密码,#如果查询到的数据库结果为空值，就表明该用户不存在，没有注册过
            res = db.queryTable(username)
            print("数据库里的结果是:"+str(res))
            if(len(res)>0):
                db_userpwd=res[0][2]
                #如果密码不对，返回密码不对，否则就登录成功
                if db_userpwd==userpwd:
                    session['username']=username
                    return render_template("introduction.html")
                else:
                    return "输入密码不对，请检查"
            else:
                return "输入用户名不对，请检查"
        else:
            return "输入用户名和密码不能为空"

#个人介绍路由
#要求必须先登录才能访问，如果不登录，则返回登录页
#全局变量   session: key-value
#  session['key']=value
@app.route("/introduction")
def introduction():
    if session.get('username') is None:
        return render_template("index.html")
    else:
        return render_template("introduction.html")

#家乡介绍路由
@app.route("/family")
def family():
    if session.get('username') is None:
        return render_template("index.html")
    else:
        return render_template("family.html")

#管理员端：页面来提交个人介绍信息给数据库
@app.route("/admin")
def admin_user():
    return  render_template("admin/admin.html",data=db.queryTable(SQL_TEMPLATES.SQL_QUERY))

#进入个人介绍管理的表单页面
@app.route("/admin/selfIntro_add")
def admin_selfIntroAdd():
    return render_template("admin/selfIntro.html")

#需要对增加的个人信息管理表单进行处理的方法
@app.route("/admin/selfIntro_add_process",methods=['POST'])
def admin_selfIntroAddProcess():
    #1.接收前端表单输入
    name = request.form.get("name")
    age = request.form.get("age")
    hobby = request.form.get("hobby")
    content = request.form.get("content")
    #2.与数据库交互，把信息插入数据库
    if db.tableOperation(SQL_TEMPLATES.SQL_INSERT.format(name,age,hobby,content)):
        return redirect("/admin")
    else:
        return "提交失败"

#更新对应id的记录
@app.route("/admin/selfIntro_update")
def admin_selfIntro_update():
    #获取对应记录的id
    id = request.args.get("id")
    #查询该记录的所有信息
    res  = db.queryTable(SQL_TEMPLATES.SQL_QUERYBYID.format(id))[0]
    return render_template("admin/selfIntroUpdate.html",data=res)

# 处理更新对应id的记录
@app.route("/admin/selfIntro_update_process",methods=['POST'])
def selfIntro_update_process():
    #传递到一个页面上显示，在页面上构造表单
    id = request.form.get("id")
    name = request.form.get("name")
    age = request.form.get("age")
    hobby = request.form.get("hobby")
    content = request.form.get("content")
    #去更新数据库里对应id的记录
    if db.tableOperation(SQL_TEMPLATES.SQL_UPDATEBYID.format(age,hobby,content,id)):
        return redirect("/admin")
    else:
        return "更新失败"


#删除对应id的记录
@app.route("/admin/selfIntro_del")
def admin_selfIntro_del():
    id = request.args.get("id")
    if db.tableOperation(SQL_TEMPLATES.SQL_DELETE.format(id)):
        return redirect("/admin")
    else:
        return "删除成功"

if __name__=='__main__':
    app.run(port=3100)